home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic 4 Database How-To / Visual Basic 4 Database - How-to (The Waite Group)(1995).iso / select8.fr_ / select8.fr
Text File  |  1995-07-04  |  4KB  |  150 lines

  1. VERSION 4.00
  2. Begin VB.Form Form1 
  3.    BackColor       =   &H00C0C0C0&
  4.    Caption         =   "Duplicate SELECTer"
  5.    ClientHeight    =   3510
  6.    ClientLeft      =   2070
  7.    ClientTop       =   1650
  8.    ClientWidth     =   7410
  9.    BeginProperty Font 
  10.       name            =   "MS Sans Serif"
  11.       charset         =   0
  12.       weight          =   700
  13.       size            =   8.25
  14.       underline       =   0   'False
  15.       italic          =   0   'False
  16.       strikethrough   =   0   'False
  17.    EndProperty
  18.    Height          =   3915
  19.    Left            =   2010
  20.    LinkTopic       =   "Form1"
  21.    ScaleHeight     =   3510
  22.    ScaleWidth      =   7410
  23.    Top             =   1305
  24.    Width           =   7530
  25.    Begin VB.CommandButton cmdClose 
  26.       Caption         =   "Close"
  27.       Height          =   615
  28.       Left            =   3120
  29.       TabIndex        =   0
  30.       Top             =   2640
  31.       Width           =   1275
  32.    End
  33.    Begin VB.Label lblCount 
  34.       Alignment       =   2  'Center
  35.       BorderStyle     =   1  'Fixed Single
  36.       Height          =   255
  37.       Left            =   2040
  38.       TabIndex        =   3
  39.       Top             =   180
  40.       Width           =   735
  41.    End
  42.    Begin VB.Label Label1 
  43.       BackColor       =   &H00C0C0C0&
  44.       Caption         =   "Duplicated values:"
  45.       Height          =   255
  46.       Left            =   300
  47.       TabIndex        =   2
  48.       Top             =   180
  49.       Width           =   1695
  50.    End
  51.    Begin MSGrid.Grid Grid1 
  52.       Height          =   1935
  53.       Left            =   300
  54.       TabIndex        =   1
  55.       Top             =   540
  56.       Width           =   6795
  57.       _Version        =   65536
  58.       _ExtentX        =   11986
  59.       _ExtentY        =   3413
  60.       _StockProps     =   77
  61.       Cols            =   3
  62.       FixedCols       =   0
  63.       ScrollBars      =   2
  64.    End
  65. End
  66. Attribute VB_Name = "Form1"
  67. Attribute VB_Creatable = False
  68. Attribute VB_Exposed = False
  69. Option Explicit
  70.  
  71. Private Sub cmdClose_Click()
  72.     End
  73. End Sub
  74.  
  75. Private Sub Form_Load()
  76.     Dim db As DATABASE
  77.     Dim dbName As String
  78.     Dim rs As Recordset
  79.     Dim sql As String
  80.     Dim subQuery As String
  81.     Dim ct As Integer
  82.     Dim gridRow As Integer
  83.  
  84.    ' Get the database name and open the database.
  85.     dbName = BiblioPath()       ' BiblioPath is a function in READINI.BAS
  86.     Set db = DBEngine.Workspaces(0).OpenDatabase(dbName)
  87.     
  88.     ' Build the subquery, starting with its SELECT statement.
  89.     subQuery = "SELECT City FROM Publishers AS Tmp"
  90.     
  91.     ' Group subquery records where both the City and State fields match.
  92.     subQuery = subQuery & " GROUP BY City, State"
  93.     
  94.     ' Add the HAVING clause to select only those subquery records that
  95.     ' occur more than once.
  96.     subQuery = subQuery & " HAVING COUNT(*) > 1 AND State = Publishers.State "
  97.     
  98.     ' Build the SQL statement
  99.     ' Start by designating the fields to be included in the recordset
  100.     ' and the WHERE IN clause
  101.     sql = "SELECT City, State, [Company Name] FROM Publishers"
  102.     
  103.     ' Add the WHERE clause, including the subquery
  104.     sql = sql & " WHERE City IN (" & subQuery & ")"
  105.     
  106.     ' Sort the output recordset in by State, then by City
  107.     sql = sql & " ORDER BY State, City"
  108.     
  109.     ' Run the query.
  110.     Set rs = db.OpenRecordset(sql, dbOpenSnapshot)
  111.     
  112.     ' Make sure the query returned at least one record
  113.     If rs.RecordCount > 0 Then
  114.     
  115.         ' Get a count of records in the recordset and display it on the form.
  116.         rs.MoveLast
  117.         ct = rs.RecordCount
  118.         lblCount.Caption = ct
  119.         
  120.         ' Initialize the grid
  121.         
  122.         grid1.Rows = ct + 1
  123.         grid1.ColWidth(0) = 700
  124.         grid1.ColWidth(1) = 2000
  125.         grid1.ColWidth(2) = 4000
  126.         grid1.Row = 0
  127.         grid1.Col = 0
  128.         grid1.TEXT = "STATE"
  129.         grid1.Col = 1
  130.         grid1.TEXT = "CITY"
  131.         grid1.Col = 2
  132.         grid1.TEXT = "PUBLISHER"
  133.         
  134.         rs.MoveFirst
  135.         For gridRow = 1 To ct
  136.             grid1.Row = gridRow
  137.             grid1.Col = 0
  138.             grid1.TEXT = rs![State]
  139.             grid1.Col = 1
  140.             grid1.TEXT = rs![City]
  141.             grid1.Col = 2
  142.             grid1.TEXT = rs![Company Name]
  143.             rs.MoveNext
  144.         Next gridRow
  145.         
  146.     End If
  147.  
  148. End Sub
  149.  
  150.